The use of One-Time-Programmable (OTP) memories as Non-Volatile storage for code in ultra-low power deeply embedded systems is recently deployed. The main reason is the smaller size of the cells compared to embedded FLASH memories. So far, OTPs have been used for storing a secret key, system's configuration parameters, or even as bit flags for various operations within a System on Chip (SoC). Lately, new technologies have enabled the use of larger OTP cells (i.e. 64 Kbytes) for storing the firmware required for the SoC to operate. Such cells are also used in SoCs designed for ultra-low power applications. So, in general, such OTP memories may store data and/or instructions of (smaller) programs.
Thus, the use of OTPs as Non-Volatile memories to store programmer's code in SoCs may be a great feature for chip vendors since different ROM versions do not need to be generated for different customers. I.e., the user can program his own firmware/software in the OTP, and a CPU based SoC will just have to execute that program as if it would be from a normal ROM memory. However, when very low power dissipation is the goal of the final SoC, the direct access of the CPU on the OTP for fetching and executing code is a drawback. Due to the anti-fuse technology that OTP memories are typically made of, access power is an order of magnitude larger than the one of a normal 6-transistor cell based embedded RAM. This is getting more important when systems need to periodically change between deep sleep mode (i.e. turning off all possible power lines to avoid leakage) and active mode (when the system actual runs the application).